package com.learn.firstBatis.dao;

import com.github.pagehelper.Page;
import com.learn.firstBatis.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserDao {
    User findUser(Long id);

    /**
     * 新建user并保存
     * @param user
     */
    void save(User user);

    /**
     * 更新指定id的User对象
     * @param user
     * @return
     */
    int update(User user);

    /**
     * 通过id删除User
     * @param id
     * @return
     */
    int deleteById(Long id);

    /**
     * 根据年龄，查询大于此年龄的用户列表
     * @param age
     * @return
     */
    List<User> findUserListGtAge(int age);

    /**
     * 查询出总条数
     * @return
     */
    long countFindAllUser();

    /**
     * 分页时传递的2个参数
     * @param page 当前页码
     * @param pageSize 每页有多少条数据
     * @return
     */
    List<User> findAllUser(@Param("page") int page,
                           @Param("pageSize") int pageSize);

    Page<User> findAllUserPagePlugin();

    /**
     * 根据年龄查询user
     * @param age
     * @return
     */
    List<User> findUserListByCondition(int age);

    /**
     * 测试 foreach 标签，
     * @param userIdList
     * @return
     */
    List<User> findUserListByIds(@Param("userIdList") List<Long> userIdList);
}
